package com.iotp.dao.role;

import com.iotp.entity.role.Role;
import org.apache.ibatis.annotations.Mapper;

import java.util.HashMap;
import java.util.List;

/**
 * 系统角色DAO接口
 * @author Assassin
 */
@Mapper
public interface RoleDAO {

	// Methods

   /**
	* 插入系统角色
	* @param role 参数实体
	* @return roleId 插入后的数据库主键值
	*/
	public Long insert(Role role);

   /**
	* 删除系统角色
	* @param roleId 主键值
	*/
	public void delete(Long roleId);

   /**
	* 更新系统角色
	* @param role 参数实体
	*/
	public void update(Role role);

   /**
	* 主键查询系统角色
	* @return Role 实体
	*/
	public Role selectById(Long roleId);

   /**
	* 根据条件查询系统角色列表
	* @param role 参数实体
	* @return List<Role> 实体List
	*/
	public List<Role> selectList(Role role);
	
	/**
	 * 根据机构Id查询当前数据库角色最大编码
	 * @param orgId 机构Id
	 * @return currentMaxRoleCode
	 */
	public String selectCurrentMaxRoleCode(Long orgId);
	
	/**
	 * 编辑角色状态（逻辑删除 | 恢复）
	 * @param paramsMap 参数Map
	 */
	public void updateIsDel(HashMap<String, Object> paramsMap);
	
	/**
	 * 查询用户的角色信息
	 * @param userId 用户Id
	 * @return List<Role>
	 */
	public List<Role> selectRoleByUserId(Long userId);
	
	/**
	 * 根据属性验证角色是否存在
	 * @param paramsMap 参数Map
	 * @return List<Role>
	 */
	public List<Role> selectIsRoleExist(HashMap<String, Object> paramsMap);
	
}